quartz: return modifiers instead of an event mask ...
authorKristian Rietveld <kris@gtk.org>
Mon, 25 Jul 2011 20:26:52 +0000 (22:26 +0200)
committerKristian Rietveld <kris@gtk.org>
Sat, 30 Jul 2011 21:01:37 +0000 (23:01 +0200)
gdk/quartz/gdkdevice-core-quartz.c
gdk/quartz/gdkevents-quartz.c
gdk/quartz/gdkprivate-quartz.h
gdk/quartz/gdkwindow-quartz.c

index 2f8781cde52cc727231a57b613755b0b0c5477f8..ff90c4a595063e3a77cc43569243bfc0cc676c28 100644 (file)
@@ -214,7 +214,8 @@ gdk_quartz_device_core_query_state_helper (GdkWindow       *window,
   toplevel = gdk_window_get_effective_toplevel (window);
 
   if (mask)
-    *mask = _gdk_quartz_events_get_current_event_mask ();
+    *mask = _gdk_quartz_events_get_current_keyboard_modifiers () |
+        _gdk_quartz_events_get_current_mouse_modifiers ();
 
   /* Get the y coordinate, needs to be flipped. */
   if (window == _gdk_root)
@@ -358,7 +359,8 @@ gdk_quartz_device_core_window_at_position (GdkDevice       *device,
     *win_y = found_window ? y_tmp : -1;
 
   if (mask)
-    *mask = _gdk_quartz_events_get_current_event_mask ();
+    *mask = _gdk_quartz_events_get_current_keyboard_modifiers () |
+        _gdk_quartz_events_get_current_mouse_modifiers ();
 
   return found_window;
 }
index c611c0a1060cc5a0299be55d3c98b0b24ad0eba4..d81f6f3002abeca3bae08a6dd383120a7db54a5b 100644 (file)
 static GdkWindow   *current_keyboard_window;
 
 /* This is the event mask and button state from the last event */
-static GdkEventMask current_event_mask;
-static int          current_button_state;
+static GdkEventMask    current_event_mask;
+static GdkModifierType current_keyboard_modifiers;
+static GdkModifierType current_mouse_modifiers;
+static int             current_button_state;
 
 static void append_event                        (GdkEvent  *event,
                                                  gboolean   windowing);
@@ -1064,6 +1066,18 @@ _gdk_quartz_events_get_current_event_mask (void)
   return current_event_mask;
 }
 
+GdkModifierType
+_gdk_quartz_events_get_current_keyboard_modifiers (void)
+{
+  return current_keyboard_modifiers;
+}
+
+GdkModifierType
+_gdk_quartz_events_get_current_mouse_modifiers (void)
+{
+  return current_mouse_modifiers;
+}
+
 static gboolean
 gdk_event_translate (GdkEvent *event,
                      NSEvent  *nsevent)
@@ -1197,6 +1211,8 @@ gdk_event_translate (GdkEvent *event,
     }
 
   current_event_mask = get_event_mask_from_ns_event (nsevent);
+  current_keyboard_modifiers = get_keyboard_modifiers_from_ns_event (nsevent);
+  current_mouse_modifiers = get_mouse_button_modifiers_from_ns_event (nsevent);
 
   return_val = TRUE;
 
index 6a05e2501bc0eeffad4c2bce143633e425aa9239..8b89a676443490d06aaa5af718565281ef8a28e6 100644 (file)
@@ -64,6 +64,9 @@ void         _gdk_quartz_events_update_focus_window    (GdkWindow *new_window,
 void         _gdk_quartz_events_send_map_event         (GdkWindow *window);
 GdkEventMask _gdk_quartz_events_get_current_event_mask (void);
 
+GdkModifierType _gdk_quartz_events_get_current_keyboard_modifiers (void);
+GdkModifierType _gdk_quartz_events_get_current_mouse_modifiers    (void);
+
 void         _gdk_quartz_events_send_enter_notify_event (GdkWindow *window);
 
 /* Event loop */
index 3b7c5e3ae3419729eed8bb8ba0921dba21964d7e..9bd104dfbabe51fc040bb3e16da834e91ce86663 100644 (file)
@@ -1836,7 +1836,8 @@ gdk_window_quartz_get_device_state_helper (GdkWindow       *window,
   
   toplevel = gdk_window_get_toplevel (window);
 
-  *mask = _gdk_quartz_events_get_current_event_mask ();
+  *mask = _gdk_quartz_events_get_current_keyboard_modifiers () |
+      _gdk_quartz_events_get_current_mouse_modifiers ();
 
   /* Get the y coordinate, needs to be flipped. */
   if (window == _gdk_root)